package cn.chenyu.util;
import java.util.Arrays;

import org.apache.log4j.Logger;
import org.aspectj.lang.ProceedingJoinPoint;

/**
 * 日志增强
 * @author Administrator
 *
 */
public class AroundLogger {
	private static final Logger log = Logger.getLogger(AroundLogger.class);
	/**
	 * 环绕增强
	 * @param jp
	 * @return
	 * @throws Throwable
	 */
	public Object aroundLogger(ProceedingJoinPoint jp) throws Throwable{
		log.info("调用"+jp.getTarget()+"的"+jp.getSignature().
				getName()+"方法。方法入参"+Arrays.toString(jp.getArgs()));
		try {
			Object result = jp.proceed();
			log.info("调用 "+jp.getTarget()+"的"+jp.getSignature().
					getName()+"方法\n方法返回值"+result);
			return result;
		} catch (Throwable ex) {
			log.info(jp.getSignature().getName()+"方法发生异常："+ex);
			throw ex;
		} finally {
			log.info(jp.getSignature().getName()+"方法执行结束");
		}
	}
}
